home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1995 March / macformat-022.iso / Shareware City / Developers / Pascal 68k folder / MW Pascal 68K 1.0b7 notes < prev   
Encoding:
Text File  |  1994-09-24  |  7.3 KB  |  136 lines  |  [TEXT/MPPS]

  1. September 23rd, 1994
  2.  
  3. MW Pascal 68K 1.0b7 Release notes.
  4.  
  5. Fixed from CW/4
  6.  
  7.     - ANS compliance
  8.     - FPU support for std math functions,
  9.     - FP negate doesn't generate bogus code anymore,
  10.     - Fixed calling convention for external C function when FPU enabled,
  11.     - Structured returns can be accessed from inside the function,
  12.     - Byte sets are supported and codegen fixed when passed as by-value args,
  13.     - type casting of scalar variables in expressions generate a value conversion,
  14.     - non-short-circuit boolean expressions are done,
  15.     - implicit conversion of unsigned ranges aren't sign extended anymore,
  16.     - transforming a char expression into a string is working,
  17.     - packed arrays assignments, clear the target bits before making them,
  18.     - writing char expression to SIOUX is corrected,
  19.     - writing of strinsg smaller than 4 char corrected,
  20.     - writing in files of... the arg's address is now always passed,
  21.     - type checking for procedure parameter with univ params is corrected,
  22.     - fixed a bug in heap management that prevented memory disposal,
  23.     - fixed a bug with ABS when the arg is a range,
  24.     - fixed sizeof when the variable/type contains a file,
  25.     - fixed a problem with gotos that came back to the main program,
  26.     - disabled goto from routine to routine when they're not nested,
  27.     - enabled smart code generation for non-local gotos/exit for nexted functions,
  28.     - integers can't be passed as by-value string anymore.
  29.     - Added to Pascal/Mathlib.lib & Pascal/MathLib881.lib a few entry points that were missing
  30.         (dec2num, dec2str, str2dec, str2num, %P_Entry, etc...). These libraries should be now
  31.         self-contained. Added also some missing entry points to Pascal/SANE881.lib.
  32.     - Fixed a bug in write that prevented functions returning strings <= 4 bytes from being
  33.         actual parameters.
  34.     - Fixed a bug with packed arrays of boolean when the array index is a constant and the
  35.         value assigned is also a constant.
  36.     - Enabled lvalue type catsing on function returns.
  37.     - Fixed a bug with the typecast of a by-var parameter as the expression of a with statement.
  38.     - Fixed a bug in BE for functions returning strings, the parameters weren't popped by the
  39.         callee.
  40.     - Fixed a bug for functions returning 1-byte sets, the set wasn't placed in the right byte.
  41.     - Fixed a bug in casting of ordinal types to pointer types.
  42.     - Enabled casting of integer constants to small arrays of something different that chars.
  43.     - Fixed a bug in parsing parameter declarations, if the parameter list started with ((, it
  44.         caused the compiler to hang.
  45.     - In some cases, a FP value was badly placed in precompiled units.
  46.     - Casting to small structured types didn't permit a selector afterward.
  47.     - bug in types.p made OSTYPE incompatible with strings.
  48.     - fixed FP output in writing to the console (SIOUX) and in StringOf.
  49.     - fixed a bug in Pos, return errorneous value when 1-char target missed.
  50.  
  51. Known problems and limitations
  52.  
  53.     - input^ and output^ generate bogus code.
  54.     - I/O and memory management std routines can't be used in code resources.
  55.  
  56. Make utility
  57.     - The make utility is rewritten and working, remove all binaries and compact your projects
  58.       before using the new make command. The algorithm & implementation are faster than with
  59.       the previous implementation. The direct compilation of a unit (cmd-K) will compile
  60.       only the implementation if the interface wasn't changed, otherwise the entire file is
  61.       compiled. If you have dependencies for which the units weren't compiled, you'll get
  62.       unit wasn't compiled, use the make command instead. There's a timestamp for every
  63.       project's unit interface compiled, these timestamps are used by the make utility to
  64.       compute the needed recompilations. There's no timestamp in libraries, so if you modify
  65.       a lib's interface and make a lib out of that project to use in another project you
  66.       should remove the binaries and remake the project, I choosed to use this approach
  67.       because it's less likely that someone changes a lib interface than a lib implementation.
  68.     - The make utility can generate a trace of the compilations, to enable this function
  69.       you have to check the 'generate make map file' from the Language preferences settings.
  70.       (If the make detects a cycle, use this option to print the files involded in it.)
  71.     
  72. Preprocessor
  73.     - MWERKS is defined as TRUE.
  74.     - MAC68K is defined as TRUE.
  75.     - POWERPC is defined as FALSE.
  76.     - conditional compilation is supported.
  77.     - the following options are not supported, but will be
  78.         $MC680x0, $MC6888x, $OV, $R,
  79.     - the following options won't be supported
  80.         $B, $C, $H, $N, $A1, $A5, $E, $K, $P, $W, $D
  81.  
  82. Extensions
  83.     - QuickDraw global variables (thePort, ...) are now contained in a record variable
  84.       named qd. (See Sillyballs.p or TubeTest.p, to see its usage).
  85.     - Procedural types are supported, see the documentation ...
  86.     - Objects can be propagated through USES clauses with the Uses propagation switch.
  87.     - Directives in the prefix file must use the preprocessor's syntax.
  88.     - Screen oriented I/O are triggered by the first I/O call made without a file descriptor. 
  89.  
  90. Assembler
  91.     - The assembler's syntax is the same as for the C compiler, the function's header is :
  92.         ProcedureHeading 'ASM' ';' { ConstDecl VarDecl TypeDecl }
  93.             'BEGIN'    AssemblerStatements 'END' ';'
  94.       refer to Tech notes for more informations.
  95.  
  96. Interfaces
  97.     - You have to include either MacIntf(MPW).lib or MacIntf(UPI).lib to access
  98.       Macintosh interfaces. The 2.0a1 interfaces are a development release
  99.       of the Pascal universal interfaces from Apple, please read the included release
  100.       notes. MacIntf(UPI).old.lib contains the precompiled Universal interfaces with
  101.       the old routine names supported.
  102.  
  103. Libraries
  104.     - Pascal's libraries are divided into 3 parts, ANS libraries, MPW Libraries and
  105.       UPI libraries. ANS libraries are specific to ANS compliant programs and should
  106.       only be used when building Standard Pascal programs. MPW Libraries retain the
  107.       same behaviour as MPW's Pascal runtime, while the UPI Libraries are adapted
  108.       to the Universal Interfaces and new Mathlib from Apple. Libraries for ANSI-C
  109.       functions are included in the runtime libraries.
  110.  
  111. Code Resources
  112.     - Code resources can only be built from units, you have to indicate, in the unit's
  113.       interface part the main entry point. This entry point is indicated by the {$MAIN}
  114.       directive. Pascal doesn't use A4-relative indexing to access global data, you
  115.       have to use nested procedures to emulate global data. Take a look at MWMemory
  116.       example to see how to declare it. You'll also need to write a small ASM function
  117.       to glue the unit's main to the Pascal code, this is due to different calling
  118.       conventions between the startup code and Pascal. Another way to do it is to write
  119.       the main function in C, it then calls the Pascal entry point, in this case, you
  120.       don't need to use {$MAIN} and the C mian must be compiled into an A4-relative library.
  121.       (Don't forget to use the pascal keyword to force pascal calling convention and reversed
  122.       parameterlist). You cannot use NEW and DISPOSE, in code resources.
  123.  
  124.     
  125. -----------------------------------------------------------------------------
  126. Marcel Achim    Pascal Compilers Product Architect
  127.  
  128.  
  129. Bug Reports, Suggestions, and Technical Questions
  130. `````````````````````````````````````````````````
  131.  
  132. Please send in your bug reports using the email Bug Report, Suggestion or Tech Question
  133. templates stored in the release notes folder. Send reports to support@metrowerks.com.
  134.  
  135.  
  136.